package clases;

import java.util.Stack;

public class Soporte implements Cloneable {

	private int posicion;
	private Stack<Disco> discos;

	public int getPosicion() {
		return posicion;
	}

	public void setPosicion(int posicion) {
		this.posicion = posicion;
	}

	public Stack<Disco> getDiscos() {
		return discos;
	}

	public void setDiscos(Stack<Disco> discos) {
		this.discos = discos;
	}

	public Soporte() {
		super();
	}

	public Soporte(int posicion, Stack<Disco> discos) {
		super();
		this.posicion = posicion;
		this.discos = discos;
	}

	@Override
	public String toString() {
		return "Soporte_" + (posicion + 1) + ", discos: " + discos + "\r\n";
	}

	@Override
	public Soporte clone() {
		Soporte soporteNuevo = new Soporte();
		Stack<Disco> discosViejos = getDiscos();
		Stack<Disco> discosNuevos = new Stack<Disco>();

		for (Disco disco : discosViejos) {
			discosNuevos.push(disco.clone());
		}

		soporteNuevo.setDiscos(discosNuevos);
		soporteNuevo.setPosicion(getPosicion());
		return soporteNuevo;
	}

	@Override
	public boolean equals(Object obj) {
		int i = 0;
		if (obj != null && obj instanceof Soporte) {
			if (((Soporte) obj).posicion == posicion && ((Soporte) obj).getDiscos().size() == getDiscos().size()) {
				if (!getDiscos().isEmpty()) {
					while (i < getDiscos().size()) {
						if (!((Soporte) obj).getDiscos().get(i).equals(getDiscos().get(i))) {
							return false;
						}
						i++;
					}
				}
			}
			else {
				return false;
			}
			return true;
		}
		return false;
	}
}
